function locator_view(divmap,divdirezioni,type) {
	this.geocoder = new google.maps.Geocoder();
	this.directionsService = new google.maps.DirectionsService();
	this.directionsDisplay = new google.maps.DirectionsRenderer();
	this.type = type;
	var opzioni = {
		center: new google.maps.LatLng(41.8905198, 12.4942486),
		zoom: 5,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	this.map = new google.maps.Map(divmap,opzioni);
	this.directionsDisplay.setMap(this.map);
	this.directionsDisplay.setPanel(divdirezioni);

	this.markers = [];
	
	
	

	/*definisco le funzioni*/	
	
	/*disegna il marker sulla mappa e lo ritorna */
	
	this.disegnaPunto = function(latitudine,longitudine,titolo) {
		var marker = new google.maps.Marker({
    			position: new google.maps.LatLng(latitudine, longitudine),
    			map: this.map,
    			title: titolo
  		});
		markers.push(marker);
		return marker;
	};
	
	
	this.disegnaPuntoByAddress = function(indirizzo,titolo) {
		
		var mappa = this.map;
		var classe = this;
		this.geocoder.geocode({ 'address': indirizzo}, function(results, status) {
		      if (status == google.maps.GeocoderStatus.OK) {
		    	  	mappa.setCenter(results[0].geometry.location);
		    	  	var marker = new google.maps.Marker({
		            map: mappa,	
		            position: results[0].geometry.location
		            });
		    	  	classe.markers.push(marker);
		    	  	
		    	  	classe.addInfoWindow(marker,titolo);
		    	  
		      }else {}
		});
		
		
	};
	
	/*aggiunge una finestra di info al click sul marker*/
	
	this.addInfoWindow = function(marker,filiale) {
		var message = this.creaDivInfo(filiale);
		 $("#results_div").append("<div class='div_filiale' id='filiale_" + filiale.idFiliale +"'>" + message + "</div>");
		//il newDiv  sbagliato 
		var newDiv = $('#filiale_'+filiale.idFiliale);
		newDiv.hover(function() {
			$(this).css("background-color","rgb(145,172,188)");
			
		},function(){
			$(this).css("background-color","#E7E5DE");
		});
		var infowindow = new google.maps.InfoWindow(
			      { content: message,
			        size: new google.maps.Size(50,50)
			      });
			  google.maps.event.addListener(marker, 'click', function() {
			    infowindow.open(this.map,marker);
			  });
			 var param= { mark:marker , mappa: this.map};
			 newDiv.click(param,function(event) {
				 //alert(marker.position);
				 infowindow.open(event.data.mappa,event.data.mark);
				});
	};
	
	this.creaDivInfo = function(filiale) {
		var message = "<div class='nome_banca'>" + filiale.banca.nome +"</div>";
		message+="<div class='detail_filiale'>"+filiale.indirizzoCompleto+"</div>";
		message+="<div class='detail_filiale'>Tel :" + filiale.telefono +"</div>";
		message+="<div class='detail_filiale'>Email :" + filiale.email +"</div>";
		message+="<div class='percorso' onClick='disegnaPercorso(\""+filiale.indirizzoCompleto+"\");' >percorso</div>";
		return message;
	};
	
	
	this.removeAllMarkers = function() {
		for (i in this.markers) {
			this.markers[i].setMap(null); 
		}
		markers = [];

	};
	
	this.disegnaPercorso = function(origine,arrivo) {
		this.directionsDisplay.setMap(this.map);
		var request = {
				origin:origine,
				destination:arrivo,
				travelMode: google.maps.TravelMode.DRIVING
		};
		var classe = this;
		this.directionsService.route(request, function(result, status) {
			if (status == google.maps.DirectionsStatus.OK) {
				classe.directionsDisplay.setDirections(result);
			}
		});
	};
	
	this.cancellaPercorso = function() {
		this.directionsDisplay.setMap(null);
		$("#div_direzioni").html("");
	};
	
	
	this.removeAllResultsDiv = function() {
		$("#results_div").html("");
	};
	
}